2019独角兽企业重金招聘Python工程师标准>>>
旧项目中erlang使用{packet, 0},使用的是{active, false}选项。由于false是最慢的,准备改版的时候,使用{active, N}选项,但失败了。
使用{packet, 0},然后启动{active, N}选项时,erlang底层解包时出现粘包的情况,数据格式错误,根本跟协议对不上。
后来参考:erlang 解决socket 数据粘包问题, 更是证实了这个问题。
很多博文都建议{packet, 4} + {active, N}.
可以使用{active, N}, 但要自己手动解包。